import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-12-03
 * Time:20:14
 */

/**
 * 回溯 + 恢复现场:257. 二叉树的所有路径
 * 给你一个二叉树的根节点 root ，按 任意顺序 ，返回所有从根节点到叶子节点的路径。
 * 叶子节点 是指没有子节点的节点。
 */
public class binaryTreePaths {
    List<String> ret;
    public List<String> binaryTreePaths(TreeNode root) {
        ret = new ArrayList<>();
        dfs(root,new StringBuffer());
        return  ret;
    }

    private void dfs(TreeNode root, StringBuffer _path) {
        // 恢复现场
        StringBuffer path = new StringBuffer(_path);
        path.append(root.val);
        if (root.left == null && root.right == null){
            ret.add(String.valueOf(path));
            return;
        }
        path.append("->");
        if (root.left != null) dfs(root.left,path);
        if (root.right != null) dfs(root.right,path);
    }
}
